import router from '@/router'
import store from '@/store'
import { cancelAll } from '@/utils/request'
// 前置守卫
const whitePage = ['/404', '/login']
router.beforeEach(async (to, from, next) => {
  // 每一次路由切换都取消所有接口请求
  cancelAll()
  // window.console.log(to, from, next)
  // 让你强行进入/login.进入/login它又会走beforeEach,
  // next() // 正常进入想去路由，直接进入了afterEach
  // 登陆用于才可以进入登陆后页面，没登陆用户不可进入需要登陆的页面
  /*
    404  login 它是不需要登陆就能访问的
    首页：是需要登陆才能访问的
    判断该用户是否登陆是使用的token，token你可理解成一个房间的钥匙,
    1:token错误
    2：你没有登陆
    真正判断 你登陆了应该是用户信息
   判断是否有token
       没有
          判断相应页面是否需要登陆
             不需要登陆页面：直接进入相应页面
             需要登陆的页面：跳转至登陆页
       有
         如果要进入的页面是登陆页：
              让它进入首页
         如果要进入的页面不是登陆页
               判断用户信息是否存在
                  存在：直接正常进入
                  不存在：获取用户信息成功后进入              

打开网址是什么登陆完成后还得进入相应地址
导航守卫配制一下就可以了
在登陆完成后，它知道是从哪个页面来的就回到哪个页面去就可以了
路由传参
next(path地址)
基本路由传参
   传： 
      path?参数名=值(想去的路由地址)
   收
      this.$route.query.参数名===相应的值
*/
  if (!store.state.user.token) {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login?redirect=' + to.fullPath)
    }
  } else {
    if (to.path.toLowerCase() === '/login') {
      // 如果有token直接进入首页，现在这样写合理吗？  合理
      next('/')
    } else {
      // 已登陆
      if (store.getters.isLogin) {
        next()
      } else {
        // 获取用户信息成功后正常进入，
        await store.dispatch('user/refreshUserInfo')
        await store.dispatch('routes/getUserRoutes')
        //  addRoutes: /employees
        next(to.fullPath)
      }
    }
  }
})
// 后置守卫
router.afterEach((to, from) => {
  window.console.log(from)
})
